Sommaire
20 commandes FFmpeg Utiles pour les débutants
Découvrez les 20 commandes FFmpeg les plus utilisées
1. Obtenir des informations sur les fichiers audio / vidéo
2. Comment convertir des fichiers vidéo en différents formats ?
3. Comment convertir des fichiers vidéo en fichiers audio ?
4. Changer la résolution des fichiers vidéo
5. Comment compresser des fichiers vidéo ?
6. Compression de fichiers audio
7. Supprimer le flux audio d’un fichier vidéo
8. Comment supprimer le flux vidéo d’un fichier multimédia
9. Extraire des images de la vidéo
11. Convertir une partie spécifique d’une vidéo
13. Ajouter une image affiche aux fichiers audio
14. Réduire la durée d’un fichier multimédia
15. Diviser les fichiers vidéo en plusieurs parties
16. Joindre ou fusionner plusieurs parties vidéo en une seule
17. Ajouter des sous-titrages à un fichier vidéo
18. Prévisualiser ou tester des fichiers vidéo ou audio
19. Augmenter / diminuer la vitesse de lecture de la vidéo
La syntaxe typique de la commande FFmpeg est la suivante:
ffmpeg [global_options] {[input_file_options] -i input_url} ...
{[output_file_options] output_url} ...
Nous allons maintenant expérimenter quelques commandes FFmpeg importantes et utiles.
Afin de pouvoir afficher les détails d’un fichier multimédia, exécutez la commande suivant:
$ ffmpeg -i video.mp4
Voici un exemple de ce que vous obtenez :
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181127
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.20.100
Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019.
At least one output file must be specified
Comme vous le constater dans la sortie ci-dessus, FFmpeg affiche pleins d’informations sur le fichier multimédia. Il affiche aussi d’autres détails sur FFmpeg tels que la version, les détails de configuration, la notice de copyright, les options de construction et de bibliothèque, etc.
Si vous ne voulez pas voir uniquement les informations sur fichier multimédia, alors utilisez l’indicateur -hide_banner pour omettre les autres détails.
$ ffmpeg -i video.mp4 -hide_banner
Voici ce que vous obtenez :
Comme vous pouvez le constater maintenant, Il n’y a que les détails du fichier multimédia.
FFmpeg est un puissant convertisseur audio et vidéo. Il est donc possible de convertir des fichiers multimédias entre différents formats.
Prenons l’exemple d’une conversion d’un fichier mp4 en fichier avi.
Il faut simplement exécuter la commande suivante :
$ ffmpeg -i video.mp4 video.avi
De même, vous pouvez convertir des fichiers multimédias dans n’importe quel format de votre choix.
Par exemple, pour convertir des vidéos au format youtube flv au format mpeg, exécutez la commande suivant:
$ ffmpeg -i video.flv video.mpeg
Si vous souhaitez préserver la qualité de votre fichier vidéo source, utilisez le paramètre « -qscale 0 » :
$ ffmpeg -i input.webm -qscale 0 output.mp4
Une bonne chose à faire est de vérifier la liste des formats pris en charge par FFmpeg. Pour le savoir procéder avec cette commande :
$ ffmpeg -formats
Pour convertir un fichier vidéo en fichier audio, spécifiez simplement le format de sortie au format .mp3, .ogg ou tout autre format audio.
La commande ci-dessus convertira le fichier vidéo input.mp4 en fichier audio output.mp3.
$ ffmpeg -i input.mp4 -vn output.mp3
Vous pouvez également utiliser diverses options de transcodage audio dans le fichier de sortie, comme indiqué ci-dessous.
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
Voici une explication de ce que représente chacun des sigles :
•.-vn : Indique que nous avons désactivé l’enregistrement vidéo dans le fichier de sortie.
•.-ar : Définit la fréquence audio du fichier de sortie. Les valeurs communes utilisées sont 22050, 44100, 48000 Hz.
•.-ac : Définit le nombre de canaux audio.
•.–ab : Indique le débit binaire audio.
•.-f : Format du fichier de sortie. Dans notre cas, c’est le format mp3.
Si vous souhaitez définir une résolution particulière pour un fichier vidéo, vous pouvez utiliser la commande suivante:
$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
Ou encore celle-ci :
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
La commande ci-dessus définira la résolution du fichier vidéo donné sur 1280 × 720.
De même, pour convertir le fichier ci-dessus en taille 640 × 480, exécutez la commande suivante:
$ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4
Ou encore:
$ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
Cette astuce vous aidera à adapter vos fichiers vidéo à des appareils d’affichage plus petits tels que des tablettes et des téléphones portables.
Il est toujours fortement recommandé de réduire la taille de vos fichiers multimédias à une taille inférieure. Cela vous permet non seulement d’économiser de l’espace disque mais aussi vos vidéos se chargeront plus rapidement.
La commande suivante compressera et réduira la taille du fichier de sortie.
$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Veuillez noter que vous perdrez la qualité si vous essayez de réduire la taille du fichier vidéo. Vous pouvez abaisser cette valeur à 23 ou moins si 24 est trop agressif.
Vous pouvez également transcoder un peu l’audio. En fait, il est possible de le rendre en mode stéréo pour en réduire la taille. Vous pouvez aussi inclure les options suivantes :
-ac 2 -c:a aac -strict -2 -b:a 128k
Tout comme pour la compression de fichiers vidéo, vous pouvez également compresser des fichiers audio à l’aide de de la commande –ab. Cela vous permettra certainement de libérer de l’espace disque.
Disons que vous avez un fichier audio de 320 kbps. Vous souhaitez le compresser en modifiant le débit binaire en une valeur inférieure, comme ci-dessous.
$ ffmpeg -i input.mp3 -ab 128 output.mp3
Voici la liste des différents débits binaires qui sont disponibles :
1.96kbps
2.112kbps
3.128kbps
4.160kbps
5.192kbps
6.256kbps
7.320kbps
Si vous ne voulez pas d’audio à partir d’un fichier vidéo, utilisez la fonction -an.
$ ffmpeg -i input.mp4 -an output.mp4
Le « an » indique qu’aucun enregistrement audio n’aura lieu.
La commande ci-dessus annulera tous les indicateurs liés à l’audio, car l’audio ne provient pas de input.mp4.
Si vous ne voulez pas de flux vidéo, vous pouvez facilement le supprimer du fichier multimédia à l’aide de l’indicateur « vn ».
Le « vn » signifie pas d’enregistrement vidéo. En d’autres termes, cette commande convertit le fichier multimédia donné en fichier audio.
La commande suivante supprimera la vidéo du fichier multimédia donné.
$ ffmpeg -i input.mp4 -vn output.mp3
Vous pouvez également mentionner le débit du fichier de sortie (output) à l’aide de l’indicateur « -ab » comme indiqué dans l’exemple suivant :
$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3
Une autre fonctionnalité utile de FFmpeg est que vous pouvez facilement extraire des images d’un fichier vidéo.
Cela pourrait être très utile si vous souhaitez créer un album photo à partir d’un fichier vidéo.
Pour extraire des images d’un fichier vidéo, utilisez la commande suivante:
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
Voici l’explication des indications :
•.-r : Définit la fréquence d’images. En d’autres termes, le nombre d’images à extraire en images par seconde. La valeur par défaut est 25.
•.-f : Indique le format de sortie, c’est-à-dire le format d’image dans notre cas.
•.image-% 2d.png : Indique comment vous voulez nommer les images extraites. Dans ce cas, les noms doivent commencer comme image-01.png, image-02.png, image-03.png, etc. Si vous utilisez %3d, le nom des images commencera comme suit: image-001.png, image-002.png, etc.
FFMpeg permet de recadrer un fichier multimédia dans n’importe quelle dimension de votre choix.
La syntaxe pour recadrer une vidéo est donnée ci-dessous:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
Voici une explication de cette ligne de commande :
•.input.mp4 : fichier vidéo source.
•.-filter : v : Indique le filtre vidéo.
•.crop : Indique le filtre de recadrage.
•.w : Largeur du rectangle que nous voulons rogner à partir de la vidéo source.
•.h : Hauteur du rectangle.
•.Coordonnée x – x du rectangle que nous souhaitons recadrer à partir de la vidéo source.
•.Coordonnée y – y du rectangle.
Supposons que vous souhaitiez une vidéo d’une largeur de 640 pixels et d’une hauteur de 480 pixels, à partir de la position (200,150). La commande serait la suivante:
$ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
Veuillez noter que le recadrage de vidéos affectera la qualité. Ne le faites que lorsque c’est nécessaire.
Parfois, vous voudrez peut-être ne convertir qu’une partie spécifique (durée) du votre vidéo en un autre format.
Par exemple, la commande suivante convertira les 10 premières secondes d’un fichier video.mp4 donné au format video.avi.
$ ffmpeg -i input.mp4 -t 10 output.avi
Dans notre exemple, j’ai spécifié le temps en secondes. En outre, il est possible de spécifier l’heure au format hh.mm.ss.
Les rapports de format couramment utilisés sont:
•.16:9
•.4:3
•.16:10
•.5:4
•.2:21:1
•.2:35:1
•.2:39:1
En ajoutant les images à vos fichiers, elles apparaîtront à chaque fois le fichier audio est lu.
Cela pourrait être utile si vous voulez héberger vos fichiers audio et vidéo chez des sites d’hébergement et de partage.
$ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
Pour réduire une vidéo en un clip plus petit en utilisant l’heure de début et de fin, nous pouvons utiliser la commande suivante :
$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
Voici l’explication de cette commande :
•.–S : Indique l’heure de début du clip vidéo. Dans notre exemple, l’heure de début correspond à la 50e seconde.
•.-t : Indique la durée totale. Item 1
Ceci est très utile lorsque vous souhaitez couper une partie d’un fichier audio ou vidéo en utilisant l’heure de début et de fin.
De même, nous pouvons réduire le fichier audio comme ci-dessous.
$ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
Certains sites Web vous permettent de télécharger uniquement une taille spécifique de vidéo. Dans ce cas, vous pouvez diviser les gros fichiers vidéo en plusieurs parties plus petites.
Voici comment faire :
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
•.–t 00:00:30 indique une partie créée du début de la vidéo à la 30e seconde de la vidéo.
•.-ss 00:00:30 indique l’heure de début de la prochaine partie de la vidéo. Cela signifie que la 2ème partie commencera à la 30e seconde et continuera jusqu’à la fin du fichier vidéo d’origine.
FFmpeg est capable également de joindre différentes parties de plusieurs vidéos et puis créer un seul fichier vidéo.
Créez un fichier join.txt contenant les chemins exacts des fichiers que vous souhaitez rejoindre. Tous les fichiers doivent être au même format (même codec). Le chemin d’accès de tous les fichiers doit être mentionné un par un, comme ci-dessous.
file /home/th/mesvideos/partie1.mp4
file /home/th/mesvideos/partie2.mp4
file /home/th/mesvideos/partie3.mp4
file /home/th/mesvideos/partie4.mp4
Maintenant, fusionner tous les fichiers en utilisant la commande suivante :
$ ffmpeg -f concat -i join.txt -c copy output.mp4
Dans le cas où vous obtenez une erreur comme celle-là :
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4'
join.txt: Operation not permitted
Ajouter « -safe 0 »:
$ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
La commande ci-dessus joindra les fichiers partie1.mp4, partie2.mp4, partie3.mp4 et partie4.mp4 dans un fichier unique appelé «output.mp4».
Vous pouvez également ajouter des sous-titrages à un fichier vidéo en utilisant FFmpeg. Téléchargez le fichier de sous-titrage correct pour votre vidéo et ajoutez-le comme indiqué ci-dessous.
$ ffmpeg -i input.mp4 -i soutitrage.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
Vous voudrez peut-être prévisualiser pour vérifier ou tester si le fichier de sortie a été correctement transcodé ou non.
Vous pouvez le faire depuis votre terminal avec la commande suivante :
$ ffplay video.mp4
La même chose s’applique si vous voulez tester les fichiers audio.
$ ffplay audio.mp3
FFmpeg vous permet aussi de régler la vitesse de lecture vidéo.
Pour augmenter la vitesse de lecture vidéo, exécutez:
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Cette commande doublera la vitesse de la vidéo.
Pour ralentir votre vidéo, vous devez utiliser un multiplicateur supérieur à 1. Pour réduire la vitesse de lecture, exécutez le code suivant:
$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
Dans ce guide, j’ai abordé les commandes FFmpeg les plus couramment utilisées. Il y a plusieurs options différentes pour faire diverses fonctions avancées. Pour en savoir plus à ce sujet, reportez-vous à la page de manuel.
$ man ffmpeg